package org.aplikator.server.descriptor;

import org.aplikator.client.shared.descriptor.SortDescriptorDTO;
import org.aplikator.server.Context;

import java.util.ArrayList;
import java.util.List;

/**
 * @author vlahoda
 */
public class SortDescriptor extends ServerDescriptorBase {
    private List<SortItem> items = new ArrayList<SortItem>();



    public SortDescriptor(String id, String label) {
        super(id);
        setLocalizationKey(label);
    }

    public SortDescriptor addItem(SortItem item){
        items.add(item);
        return this;
    }

    public List<SortItem> getItems() {
        return items;
    }
    
    public Property getPrimarySortProperty() {
    	return items.get(0).getSortProperty();
    }

    public SortDescriptorDTO getSortDescriptorDTO(Context ctx) {
        SortDescriptorDTO sortDescriptorDTO = new SortDescriptorDTO(this.getId(), this.getLocalizedName(ctx));
        if (items.size()>0){
            sortDescriptorDTO.setPrimarySortProperty(items.get(0).getSortProperty().clientClone(ctx));
        } else{
            throw new IllegalStateException("SortDescriptor "+getId()+" has no SortItems.");
        }
        return sortDescriptorDTO;
    }
}
